A computer cluster is a group of physical electronic devices (e.g., computing devices) that are commonly connected through a network connection (e.g., local area network). The group of electronic devices is linked together to improve performance over that of a single electronic device by sharing computational workload among multiple electronic devices. By coupling two or more physical electronic devices through a network, a user may take advantage of the parallel processing power of the electronic devices. The parallel processing power of a computer cluster is typically more cost effective than a mainframe (single large source of processing power) with similar power.
Virtualization provides the means for partitioning hardware resources that makes it seem as if each of multiple services running on an electronic device is individually hosted on a separate electronic device. With the advent of virtualization technology, a user may set up an electronic device so that multiple virtual machines or multiple instantiations of the same application or service run simultaneously on the single electronic device. While a computer cluster has multiple physical electronic devices linked together to perform parallel processing, a virtual cluster on a single electronic device has multiple services performing operations simultaneously on the single device.
Certain operations (e.g., encoding operations) are not threaded in a manner that inherently takes advantage of all the computing resources of an electronic device. For example, a single instance of a particular operation might only be able to use one or two cores of a multi-core processor because of the way its processes are threaded. A single-threaded operation, for instance, can generally only utilize one core.
FIG. 1 illustrates an example of a service that uses only a portion of the available computing resources. In this example, the service 105 uses two cores 110 and 115 out of eight-cores in an eight-core processor 120 that is part of an electronic device to process an operation. In order to make use of the available resources, a user of the electronic device may manually increase the number of services for the services to process portions of the operation simultaneously, thereby making use of the available resources and increasing the efficiency in processing the operation.
However, in order for a user of an electronic device to improve the performance of an operation, not only must the user understand that not all of the available computing resources are being utilized in processing the operation, but the user must also be able to determine the number of services to run to improve the performance of the operation (e.g., to maximally utilize the available resources and increase the processing speed). Users are often unfamiliar with the underlying mechanics of their computer systems, which makes it difficult for the users to determine the number of instances to create to maximize performance in processing a particular operation.